package cn.fldong.service;

import cn.fldong.model.Course;
import java.sql.SQLException;
import java.util.List;
import java.math.BigDecimal;

/**
 * CourseService接口，定义课程相关的业务逻辑操作
 */
public interface CourseService {
    /**
     * 根据课程ID查询课程
     * @param courseId 课程ID
     * @return 课程对象
     * @throws SQLException 数据库操作异常
     */
    Course getCourseById(String courseId) throws SQLException;
    
    /**
     * 根据课程名称查询课程
     * @param courseName 课程名称
     * @return 课程列表
     * @throws SQLException 数据库操作异常
     */
    List<Course> getCoursesByName(String courseName) throws SQLException;
    
    /**
     * 根据学期查询课程
     * @param semester 学期
     * @return 课程列表
     * @throws SQLException 数据库操作异常
     */
    List<Course> getCoursesBySemester(String semester) throws SQLException;
    
    /**
     * 查询所有课程
     * @return 课程列表
     * @throws SQLException 数据库操作异常
     */
    List<Course> getAllCourses() throws SQLException;
    
    /**
     * 添加新课程
     * @param course 课程对象
     * @return 添加成功返回true，否则返回false
     * @throws SQLException 数据库操作异常
     */
    boolean addCourse(Course course) throws SQLException;
    
    /**
     * 更新课程信息
     * @param course 课程对象
     * @return 更新成功返回true，否则返回false
     * @throws SQLException 数据库操作异常
     */
    boolean updateCourse(Course course) throws SQLException;
    
    /**
     * 删除课程
     * @param courseId 课程ID
     * @return 删除成功返回true，否则返回false
     * @throws SQLException 数据库操作异常
     */
    boolean deleteCourse(String courseId) throws SQLException;
    
    /**
     * 验证课程名称是否已存在
     * @param courseName 课程名称
     * @return 存在返回true，否则返回false
     * @throws SQLException 数据库操作异常
     */
    boolean courseNameExists(String courseName) throws SQLException;
}